#include <iostream>
#include <unistd.h>
#include <pthread.h>

using namespace std;

int g_val = 0;

void *threadHandler1(void *args)
{
    while (true)
    {
        printf("我是次线程1，我正在运行... &g_val: %p  g_val: %d\n", &g_val, g_val);
        sleep(1);
    }
}

void *threadHandler2(void *args)
{
    while (true)
    {
        printf("我是次线程2，我正在运行... &g_val: %p  g_val: %d\n", &g_val, g_val);
        g_val++; // 次线程2 每次都需改这个全局变量
        sleep(1);
    }
}

int main()
{
    pthread_t t1, t2; // 创建两个线程
    pthread_create(&t1, NULL, threadHandler1, NULL);
    pthread_create(&t2, NULL, threadHandler2, NULL);

    // 主线程运行
    while (true)
    {
        printf("我是主线程，我正在运行... &g_val: %p  g_val: %d\n", &g_val, g_val);
        sleep(1);
    }

    return 0;
}


// int g_val = 0;

// void *threadHandler1(void *args)
// {
//     while (true)
//     {
//         printf("我是次线程1，我正在运行... &g_val: %p  g_val: %d\n", &g_val, g_val);
//         sleep(1);
//     }
// }

// void *threadHandler2(void *args)
// {
//     while (true)
//     {
//         printf("我是次线程2，我正在运行... &g_val: %p  g_val: %d\n", &g_val, g_val);
//         g_val++; // 次线程2 每次都需改这个全局变量
//         sleep(1);
//     }
// }

// int main()
// {
//     pthread_t t1, t2; // 创建两个线程
//     pthread_create(&t1, NULL, threadHandler1, NULL);
//     pthread_create(&t2, NULL, threadHandler2, NULL);

//     // 主线程运行
//     while (true)
//     {
//         printf("我是主线程，我正在运行... &g_val: %p  g_val: %d\n", &g_val, g_val);
//         sleep(1);
//     }

//     return 0;
// }

// void *threadHandler1(void *args)
// {
//     while (true)
//     {
//         cout << "我是次线程1，我正在运行..." << endl;
//         sleep(1);
//     }
// }

// void *threadHandler2(void *args)
// {
//     while (true)
//     {
//         sleep(5); // 等其他线程先跑一会
//         cout << "我是次线程2，我正在运行..." << endl;
//         char *ps = "Change World!";
//         *ps = 'N';
//     }
// }

// int main()
// {
//     pthread_t t1, t2; // 创建两个线程
//     pthread_create(&t1, NULL, threadHandler1, NULL);
//     pthread_create(&t2, NULL, threadHandler2, NULL);

//     // 主线程运行
//     while (true)
//     {
//         cout << "我是主线程" << endl;
//         sleep(1);
//     }

//     return 0;
// }

// void *threadHandler1(void *args)
// {
//     while (true)
//     {
//         cout << "我是次线程1，我正在运行..." << endl;
//         sleep(1);
//     }
// }

// void *threadHandler2(void *args)
// {
//     while (true)
//     {
//         cout << "我是次线程2，我正在运行..." << endl;
//         sleep(1);
//     }
// }

// void *threadHandler3(void *args)
// {
//     while (true)
//     {
//         cout << "我是次线程3，我正在运行..." << endl;
//         sleep(1);
//     }
// }

// int main()
// {
//     // pthread_t t1, t2, t3; // 创建三个线程
//     // pthread_create(&t1, NULL, threadHandler1, NULL);
//     // pthread_create(&t2, NULL, threadHandler2, NULL);
//     // pthread_create(&t3, NULL, threadHandler3, NULL);

//     // // 主线程运行
//     // while (true)
//     // {
//     //     cout << "我是主线程" << endl;
//     //     sleep(1);
//     // }

//     char *ps = "Change World!";
//     *ps = 'N';

//     return 0;
// }